package com.hdu.careerplan.service;

import com.hdu.careerplan.pojo.dto.UserBasicInfoDTO;
import com.hdu.careerplan.pojo.dto.UserEducationInfoDTO;
import com.hdu.careerplan.pojo.entity.Resume;
import com.hdu.careerplan.pojo.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hdu.careerplan.pojo.entity.UserBasicInfo;
import com.hdu.careerplan.pojo.entity.UserEducationInfo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;

/**
* @author 10240
* @description 针对表【user】的数据库操作Service
* @createDate 2024-02-16 11:34:33
*/
public interface UserService extends IService<User> {

    /**
     * 用户注册
     * @param phone 手机号
     * @param password 密码
     * @return 0 为成功 -1 为失败
     */
    int register(String phone, String password);

    /**
     * 用户登录
     * @param phone 手机号
     * @param password 密码
     * @return 用户信息，为null自然会失败
     */
    User login(String phone, String password);

    /**
     * 用户基本信息提交
     * @param userBasicInfoDTO 用户基本信息
     * @param phone 手机号
     */
    int updateBasicInfo(UserBasicInfoDTO userBasicInfoDTO, String phone);

    /**
     * 用户基本信息查询
     * @param phone 手机号
     * @return 用户信息，为null自然会失败
     */
    UserBasicInfo getBasicInfo(String phone);


    /**
     * 用户学业信息提交
     * @param userEducationInfoDTO 用户学业信息
     * @param phone 手机号
     */
    int updateEducationInfo(UserEducationInfoDTO userEducationInfoDTO, String phone);

    /**
     * 用户学业信息查询
     * @param phone 手机号
     * @return 用户信息，为null自然会失败
     */
    UserEducationInfo getEducationInfo(String phone);


    /**
     * 上传文件简历和表单简历
     * @param resumeFile 文件简历
     * @param formData 表单简历
     * @return 成功为0，否则为1
     */
    int uploadResume(MultipartFile resumeFile, String formData, Long userId, String phone) throws IOException;

    /**
     * 获取已经填写的简历
     * @param userId 用户Id
     * @return 返回已经填写的内容
     */
    Resume getResume(Long userId);

    /**
     * 用户下载简历
     * @param userId 用户Id
     * @return 成功返回文件，否则为null
     */
    File downloadResume(Long userId);

}
